#include <iostream>
#include <cmath>
using namespace std;
#define int long long
// 计算最大公约数
int gcd(int a, int b) {
    return b == 0 ? a : gcd(b, a % b);
}

// 计算最小公倍数
int lcm(int a, int b) {
    return a * b/ gcd(a, b);
}

signed main() {
    int n;
    cin >> n;
    
    while (n--) {
        int a0, a1, b0, b1;
        cin >> a0 >> a1 >> b0 >> b1;
        
        int count = 0;
        
        // 枚举b1的所有约数
        for (int x = 1; x * x <= b1; x++) {
            if (b1 % x == 0) {
                // 检查约数x
                if (gcd(x, a0) == a1 && lcm(x, b0) == b1) {
                    count++;
                }
                
                // 检查对应的约数b1/x（避免重复计数当x*x = b1时）
                if (x != b1 / x) {
                    int y = b1 / x;
                    if (gcd(y, a0) == a1 && lcm(y, b0) == b1) {
                        count++;
                    }
                }
            }
        }
        
        cout << count << endl;
    }
    
    return 0;
}